5371
15365
Ik heb een dataset zoals hieronder weergegeven
naam col1 col2
een 10,3 10,9
b 11 15
c 20 7.2
d 6.2 6.2
e 5.3 5.4
f 4.5 4.0
ik wil col1 en col2 van mijn df vergelijken en ik wil een andere kolom maken waarin ik bij het vergelijken van col1- en col2-waarden als de waarde van col2 toeneemt van col1, ik daar naast hen in mijn kolom wil invoeren en of ze dat zijn afnemende dan wil ik schrijven aflopend en geen wijzigingen als ze hetzelfde zijn
en ik wil mijn output op deze manier
naam col1 col2 col3
een 10,3 10,9 stijgend
b 11 15 stijgend
c 20 7.2 afnemend
d 6.2 6.2 geen verandering
e 5,3 5,4 stijgend
f 4,5 4,0 afnemend 
Met dplyr:
df%>%
muteren (Col3 = ifelse (col2 == col1,
"geen verandering",
ifelse (col2> col1,
"toenemende", "afnemende")))
Of gebruik case_when zoals voorgesteld door @akrun:
df%>%
mutate (Col3 = case_when (col1 == col2 ~ "no change",
col2> col1 ~ "Toenemend",
TRUE ~ "afnemend"))
Resultaat:
naam col1 col2 Col3
1 een 10,3 10,9 stijgend
2 b 11,0 15,0 stijgend
3 c 20,0 7,2 afnemend
4 d 6.2 6.2 geen verandering
5 e 5,3 5,4 stijgend
6 f 4,5 4,0 afnemend
Gegevens:
df <-structure (list (name = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3,
11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA,
-6L))
|
We kunnen col1 aftrekken door col2 en dan teken gebruiken om waarden toe te wijzen
df $ col3 <- c ("afnemend", "geen verandering", "toenemende") [teken (df $ col1 - df $ col2) + 2]
df
# naam col1 col2 col3
# 1 een 10,3 10,9 afnemend
# 2 b 11,0 15,0 afnemend
# 3 c 20,0 7,2 toenemend
# 4 d 6.2 6.2 geen verandering
# 5 e 5,3 5,4 afnemend
# 6 f 4.5 4.0 stijgend
Of met dplyr kunnen we case_when gebruiken
bibliotheek (dplyr)
df%>%
mutate (col3 = case_when (col1 == col2 ~ "no change",
col1> col2 ~ "toenemende",
TRUE ~ "afnemend"))
|
Basis R
df $ col3 <-with (df, ifelse (col1> col2, "afnemende",
ifelse (col1